/**
 * 
 */
package vue;

import model.EErrorPopUp;
import model.session.CNFUse;
import model.session.ExecutableSessionBlock;
import controller.ISessionManager;
import controller.SessionManager;

/**
 * Interface for a graphic use of {@link SessionManager}.
 * 
 * @author GRONOWSKI Stephane svan001@aol.com
 * 
 *         igsat 2010
 * 
 */
public interface IIGSessionManager {


	/**
	 * Get the {@link SessionManager}.
	 * 
	 * @return the {@link SessionManager}.
	 * 
	 */
	public ISessionManager getSessionManager();

	/**
	 * Update the information of the CNF of the cnfuse
	 * 
	 * @param cnf
	 *            the cnf
	 */
	public void updateCNFInformation(CNFUse cnf);

	/*
	 * Show all the informations about the cnf of the {@link CNFUse}.
	 * 
	 * @param cnf the cnf
	 * 
	 * public void showAll(CNFUse cnf);
	 */

	/**
	 * Update the all CNFUse representation : means cnf, preprocessor, solver ...
	 * 
	 * @param cnf
	 *            the cnfuse
	 */
	public void updateCNFUse(CNFUse cnf);

	/**
	 * Add something that show this execution was started and is running.
	 * 
	 * @param exec
	 *            the execution
	 * @param cnf
	 *            the cnf that is concern by this execution
	 */
	public void addRunningExecution(ExecutableSessionBlock exec, CNFUse cnf);

	/**
	 * Add something that show this execution was started and is running.
	 * 
	 * @param exec
	 *            the execution
	 * @param cnf
	 *            the cnf that is concern by this execution
	 */
	public void removeRunningExecution(ExecutableSessionBlock exec, CNFUse cnf);

	/*
	 * /** add something that show this execution was started and is running
	 * 
	 * @param exec the execution
	 * 
	 * public void addRunningExecution(SolverExecution exec);
	 * 
	 * /** add something that show this execution was started and is running
	 * 
	 * @param exec the execution
	 * 
	 * public void removeRunningExecution(PreprocessorExecution exec);
	 */

	/**
	 * Create a pop up for the specified type and message.
	 * 
	 * @param type
	 *            type of pop up
	 * @param message
	 *            additional message
	 */
	public void showErrorPopup(EErrorPopUp type, String message);

}
